local ION_OUKURA_INDEX = GameInfo.GreatPersonIndividuals['GREAT_PERSON_INDIVIDUAL_ION_OUKURA'].Index;
local INDUSTRY = GameInfo.Improvements['IMPROVEMENT_INDUSTRY'];
function AsahiGreatPersonHandleActivation (playerId, unitId, greatPersonIndividualId)
	if greatPersonIndividualId == ION_OUKURA_INDEX and INDUSTRY ~= nil then
		local unit = UnitManager.GetUnit(playerId, unitId);
		local unitPlot = Map.GetPlot(unit:GetX(), unit:GetY());
		local districtAtPlot = CityManager.GetDistrictAt(unitPlot);
		if districtAtPlot ~= nil then
			local city = districtAtPlot:GetCity();
			local plots = Map.GetCityPlots():GetPurchasedPlots(city);
			for _, plotIndex in ipairs(plots) do
				local plot = Map.GetPlotByIndex(plotIndex);
				local resource = plot:GetResourceType();
				if (resource ~= nil) and (resource ~= -1) then
					local resourceInfo = GameInfo.Resources[resource];
					if resourceInfo.ResourceClassType == "RESOURCECLASS_LUXURY" then
						ExposedMembers.GameEvents.AsahiImprovementSwitch.Call(playerId, plotIndex, INDUSTRY.Index);
					end
				end
			end
		end
	end
end

ExposedMembers.GameEvents.GreatPersonHandleActivation.Add(AsahiGreatPersonHandleActivation);